A curated list of awesome developer tools for writing cross-platform
        Node.js code.
      
     
    Contents
    
    Resources
    
    Applications
    Development environment
    
    Continuous integration
    
      - 
        AppVeyor - Focused on Windows.
        Free tiers are available for OSS projects.
      
 
      - 
        Travis - Windows/macOS/Linux. Free
        for OSS projects.
      
 
      - 
        Azure Pipelines
        - Windows/macOS/Linux. Free for OSS projects with 10 parallel jobs.
      
 
      - 
        Github Action -
        Windows/macOS/Linux. GitHub Actions makes it easy to automate all your
        software workflows.
      
 
      - 
        Gitlab CI -
        Windows/macOS/Linux. GitLab CI/CD is a tool built into GitLab for
        software development.
      
 
    
    Virtualization
    
      - 
        ievms - Automated
        installer for the free virtual machine images that Microsoft provides
        for testing on multiple versions of IE. These images can be useful for
        cross-platform testing various technologies, however make sure you read
        and understand Microsofts’ licensing.
      
 
      - 
        VirtualBox -
        General purpose software for running x86 virtual machines.
      
 
      - 
        Docker - Software platform to
        create, deploy and manage virtualized application containers on a common
        operating system, with an ecosystem of allied tools.
      
 
    
    Compatibility
    
      - 
        Wine - Run Windows API calls on
        Linux, Mac, BSD and Solaris.
      
 
      - 
        Cygwin - Run POSIX on Windows.
      
 
      - 
        WSL
        - Run the Linux command line on Windows (ELF binary execution, system
        calls, filesystem, Bash, core utilities, common applications).
      
 
      - 
        MinGW - 
gcc on Windows.
       
      - 
        msys /
        Git Bash - Bash on Windows.
      
 
    
    Databases
    
      - 
        Redis - Native port
        of Redis for Windows.
      
 
    
    Libraries
    OS identification
    
      - 
        is-windows -
        Detect whether the current platform is Windows.
      
 
      - 
        is-wsl - Detect
        whether current platform is WSL (Windows Subsystem for Linux).
      
 
      - 
        getos - Retrieve the
        current OS, including Linux distribution.
      
 
      - 
        os-name - Get the
        name of the current operating system.
      
 
      - 
        systeminformation
        - Hardware/software system information.
      
 
    
    Shell
    
      - 
        execa -
        Cross-platform implementation of
        
child_process.{execFile,exec}.
       
      - 
        gulp-execa -
        Cross-platform command execution in Gulp.js.
      
 
      - 
        cross-spawn
        - Cross-platform implementation of 
child_process.spawn().
       
      - 
        shelljs -
        Cross-platform Unix shell commands.
      
 
      - 
        node-windows -
        Windows support for Node.js scripts (daemons, eventlog, UAC, etc).
      
 
      - 
        log-symbols -
        Colored symbols for various log levels with Windows fallbacks.
      
 
      - 
        figures - Unicode
        symbols with Windows fallbacks.
      
 
      - 
        clipboardy /
        clipboard-cli
        - Cross-platform copy/paste.
      
 
    
    Environment
    
      - 
        cross-env - Set
        environment variables cross-platform.
      
 
      - 
        user-home - Get
        the path to the user home directory. Cross-platform.
      
 
      - 
        username - Get
        the current username.
      
 
      - 
        osenv - Cross-platform
        environment variables.
      
 
      - 
        is-elevated -
        Check if the process is running with elevated privileges.
      
 
      - 
        which - Cross-platform
        implementation of Unix’s 
which.
       
    
    Filesystem
    
      - 
        rimraf /
        del - Delete files and
        folders. Cross-platform.
      
 
      - 
        make-dir -
        Cross-platform 
mkdir -p.
       
      - 
        readdirp - Recursive
        version of 
fs.readdir().
       
      - 
        cpy - Copy files.
        Cross-platform.
      
 
      - 
        chokidar - Improved
        cross-platform file watching.
      
 
      - 
        graceful-fs -
        Improves the 
fs module, especially on Windows.
       
      - 
        fs-extra -
        Combines 
graceful-fs with better JSON file reading and
        promises.
       
      - 
        any-path - Use Windows
        and POSIX paths interchangeably when fetching values from an object.
      
 
      - 
        dev-null-cli
        - Cross-platform 
/dev/null.
       
    
    Signals
    
      - 
        fkill - Kill
        processes. Cross-platform.
      
 
      - 
        signal-exit -
        Cross-platform 
exit handler.
       
    
    Processes
    
    Streams
    
    Desktop UI
    
      - 
        open - Opens stuff
        like websites, files, executables. Cross-platform.
      
 
      - 
        node-notifier -
        Cross-platform desktop notifications.
      
 
    
    Windows registry
    
    Known issues
    
      - 
        cmd.exe unicode woes
        - By default, 
cmd.exe does not display Unicode characters
        on Windows.
       
      - 
        spawn issues
        - 
child_process.spawn() behavior is not consistent between
        Windows and Linux.
       
      - 
        exec() behavior between shells
        - Depending on the shell being used, e.g., bash vs. dash,
        
child_process.exec() has inconsistent exit behavior.
       
    
    See also
    
    Support
    
      If you found an error or would like to add more information,
      don’t hesitate to
      submit an issue on GitHub.
    
    
      Everyone is welcome regardless of personal background. We enforce a
      Code of conduct in order to promote a
      positive and inclusive environment.
    
    Contributing
    
      This project was made with ❤️. The simplest way to give back is by
      starring and sharing it online.
    
    
      If the documentation is unclear or has a typo, please click on the page’s
      Edit button (pencil icon) and suggest a correction.
    
    
      If you would like to help us fix an error or add more information, please
      check our guidelines. Pull requests are
      welcome!
    
    Thanks go to these wonderful people:
    
    
    
    
    
      This project follows the
      all-contributors
      specification.
    
    License